﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Proxy;
using SIM.Geo.UI.Movil.Clases;

namespace SIM.Geo.UI.Movil.Controllers
{
    public class LoginController : BaseController
    {
        //
        // GET: /Login/

        public ActionResult Index()
        {
            Session.Abandon();
            Session.Clear();

           // string  rawUrl   =  Request.RawUrl;
           //if (!rawUrl.EndsWith("/"))
           // {
           //     Response.RedirectPermanent(String.Format("~{0}/", rawUrl));
           //}
            return View();
        }

        [HttpPost]
        public JsonResult Validate(string strXsid, string strXpc)
        {

            Resultado retorno = new Resultado();
            try
            {
                using (var proxy = new SEUsuarioClient())
                {
                    var usuario = proxy.ValidarAcceso(strXsid, strXpc);
                    if (usuario == null)
                    {
                        retorno.message = "No se ha encontrado el usuario o el Password es Incorrecto.";
                        retorno.result = 0;
                    }
                    else
                    {
                        #region Validacion de datos usuario
                        int codigoPerfilGeologo = int.Parse(System.Configuration.ConfigurationManager.AppSettings["codigoPerfilGeologo"]);
                        int codigoPerfilGeomecanica = int.Parse(System.Configuration.ConfigurationManager.AppSettings["codigoPerfilGeomecanico"]);

                        //Captura su perfil de Geologo o GeoMecanica
                        var firstPerfil = usuario.Perfiles.Where(x => x.CodigoPerfil == codigoPerfilGeologo || x.CodigoPerfil == codigoPerfilGeomecanica).FirstOrDefault();

                        //Agrego el usuario a la Sessión
                        //Valida si es geologo o no
                        if (firstPerfil != null)
                        {
                            //Obtiene el usuario con todos usus datos según perfil
                            usuario = proxy.ObtenerUsuarioPerfil(strXsid, firstPerfil.CodigoPerfil);

                            if (usuario == null)
                            {
                                retorno.message = "El usuario no tiene perfil de usuario.";
                                retorno.result = 0;
                            }
                            else
                            {
                                if (usuario.CodigoGeologo == 0)
                                {
                                    retorno.message = "El usuario no tiene código de Geólogo asociado.";
                                    retorno.result = 0;
                                }
                                else
                                {
                                    //Si es geologo se asigna a una session al usuario
                                    Session.Add(Sesiones.USUARIO, usuario);

                                    ////Al final borrar todo este código
                                    //if (usuario.CodigoUsuario == "jperez")
                                    //{
                                    //    usuario.NombrePerfil = "GEOLOGO";
                                    //    Session.Add(Sesiones.USUARIO_ID, usuario.CodigoGeologo.ToString());
                                    //}
                                    //if (usuario.CodigoUsuario == "lsanchez")
                                    //{
                                    //    usuario.NombrePerfil = "GEOMECANICO";
                                    //    Session.Add(Sesiones.USUARIO_ID, usuario.CodigoGeologo.ToString());
                                    //}
                                    retorno.result = 1;
                                    retorno.message = "";
                                    //Session.Add(Sesiones.USUARIO, usuario.NombreUsuario);
                                    //Session.Add(Sesiones.PERFIL, usuario.NombrePerfil);
                                    //Hasta aqui borrar
                                }
                            }

                        }
                        else
                        {
                            retorno.message = "El usuario no tiene perfil de usuario válido.";
                            retorno.result = 0;
                        }
                        #endregion
                    }
                }

            }
            catch (Exception ex)
            {
                retorno.result = 0;
                retorno.message = String.Format(Constantes.MensajeGenerico.MSG_ERROR_LOGUEO, ex.Message);
            }
            return Json(retorno, JsonRequestBehavior.AllowGet);
        }
    }
}
